package sk.tuke.serviceInterface;

import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.apache.cxf.feature.Features;

import sk.tuke.domain.IO.userManagemet.CreateDoctorInput;
import sk.tuke.domain.IO.userManagemet.CreatePatientInput;
import sk.tuke.domain.IO.userManagemet.GetDoctorsInput;
import sk.tuke.domain.IO.userManagemet.GetPatientsInput;
import sk.tuke.domain.IO.userManagemet.LoginInput;
import sk.tuke.domain.IO.userManagemet.UpdateDoctorInput;

@Produces(MediaType.APPLICATION_JSON)
@Features(features = "org.apache.cxf.feature.LoggingFeature")
public interface UserManagementService {

	@POST
	@Path("/createdoctor")
	@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
	public Response createDoctor(@FormParam("") CreateDoctorInput createDoctorInput) throws Throwable;

	@POST
	@Path("/createpatient")
	@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
	public Response createPatient(@FormParam("") CreatePatientInput createPatientInput) throws Throwable;

	@GET
	@Path("/getpatients")
	public Response getPatients(@QueryParam("") GetPatientsInput getPatientsInput) throws Throwable;

	@GET
	@Path("/getdoctors")
	public Response getDoctors(@QueryParam("") GetDoctorsInput getUserInput) throws Throwable;

	@PUT
	@Path("/updatedoctor")
	@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
	public Response updateDoctor(@FormParam("") UpdateDoctorInput updateUserInput) throws Throwable;

	@POST
	@Path("/login")
	@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
	public Response loginToHealthCard(@FormParam("") LoginInput loginInput) throws Throwable;

}
